The present disclosure relates to techniques for managing memory in computing systems, and more specifically to techniques for zeroing memory in computing systems where access to memory is non-uniform.
Concerns over memory mismanagement continue to increase due to the increasing inadvertent and malicious misuse of memory in computing systems. For example, the same memory is often used by different applications or processes within an operating system instance. Additionally, in systems that employ virtualization as a tool to abstract physical resources (such as processors, memory, storage, etc.) into different logical partitions (running different operating systems), the same memory can also be used by different applications (or processes) in each logical partition. In these situations, it is often possible for a subsequent application to access or recover data within memory that was used by the previous application. This recovered data, if exploited, can comprise the security of several programs in the operating system and/or comprise sensitive customer information.
To address these concerns, operating systems increasingly zero pages of memory before applications can use the memory. Page zeroing generally refers to the process of writing zeros or a binary pattern over pages of memory. Examples of such memory include memory segments used for stack, data, newly created shared memory regions, etc. Further, apart from the security concerns, page zeroing is also used as a tool to increase the efficiency of certain applications. For example, certain applications (e.g., cryptographic applications and others) can benefit from having pages of memory initially zeroed, since the applications do not have to explicitly initialize variables to zero.
As memory sizes continue to grow each year, however, implementing page zeroing for large amounts of memory is increasingly becoming a time-consuming and hardware intensive process. Thus, there is a need for improved methods for implementing page zeroing in systems that support large memory sizes.